/**
 * Created by zhourh on 2018/9/19.
 *
 * 给定一个字符串来代表一个学生的出勤纪录，这个纪录仅包含以下三个字符：

 'A' : Absent，缺勤
 'L' : Late，迟到
 'P' : Present，到场
 如果一个学生的出勤纪录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。

 你需要根据这个学生的出勤纪录判断他是否会被奖赏。

 示例 1:

 输入: "PPALLP"
 输出: True
 示例 2:

 输入: "PPALLL"
 输出: False

 */
public class StudentAttendanceRecordI {

    public static void main(String[] args) {
        System.out.println(new StudentAttendanceRecordI().checkRecord("PPALLP"));
        System.out.println(new StudentAttendanceRecordI().checkRecord("PPALLL"));
    }

    public boolean checkRecord(String s) {
        if (s == null || s.isEmpty()) {
            return true;
        }

        int lateCount = 0;
        int absentCount = 0;

        char[] records = s.toCharArray();

        for (char record : records) {
            switch (record) {
                case 'A':
                    absentCount++;
                    if (absentCount > 1) {
                        return false;
                    }
                    lateCount = 0;
                    break;
                case 'L':
                    if (lateCount >= 2) {
                        return false;
                    }
                    lateCount++;
                    break;
                case 'P':
                    lateCount = 0;
                    break;
            }
        }

        return true;
    }
}
